#include <bits/stdc++.h>
using namespace std;
using ll =long long;
ll a,b,h,k,sum;
//https://ac.nowcoder.com/acm/problem/223985
// int main()
// {
//     cin>>a>>h>>b>>k;
//     ll temp=min(h/b,k/a);
//     sum+=temp*(a+b);
//     k-=temp*a;
//     h-=temp*b;
//     if(k>0&&h>0)
//     {
//         sum+=a+b;
//         k-=a;
//         h-=b;
//     }
//     if(k<=0&&h>0)sum+=a*10;
//     else if(k>0&&h<=0)sum+=b*10;
//     cout<<sum<<endl;
//     return 0;
// }

//https://www.nowcoder.com/practice/1718131e719746e9a56fb29c40cc8f95?tpId=230&tqId=39753&ru=/exam/oj
// int main() 
// {
//     int a;
//     cin>>a;
//     vector<ll>ret(a);
//     for(int i=0;i<a;i++)cin>>ret[i];
//     ll curr_sum=ret[0];
//     ll max_sum=ret[0];
//     for(int i=1;i<a;i++)
//     {
//         curr_sum=max(ret[i],curr_sum+ret[i]);
//         max_sum=max(max_sum,curr_sum);
//     }
//     cout<<max_sum<<endl;
//     return 0;
// }

// int main() 
// {
//     int a;
//     cin>>a;
//     vector<ll>ret(a+1,0);
//     for(int i=1;i<=a;i++)
//     {
//         cin>>ret[i];
//         ret[i]+=ret[i-1];//前缀和数组
//     }
//     //pref[i]-pref[j-1](尽可能小)
//     ll maxretsum=LLONG_MIN,minsuffix=0;
//     for(int i=1;i<=a;i++)
//     {
//         //min放在下面才能处理全是负数的情况
//         maxretsum=max(maxretsum,ret[i]-minsuffix);
//         minsuffix=min(minsuffix,ret[i]);
//     }
//     cout<<maxretsum<<endl;
//     return 0;
// }

//dp-线性dp
//dp[i]表示以i位置结尾的所有的子数组中，最大和是多少
// int main()
// {
//     int a;
//     cin>>a;
//     vector<int>ret(a+1,0);
//     for(int i=1;i<=a;i++)cin>>ret[i];
//     vector<int> dp(a+1,0);
//     int maxl=INT_MIN;
//     for(int i=1;i<=a;i++)
//     {
//         //自己玩和跟前面的元素一起玩
//         dp[i]=max(dp[i-1],0) +ret[i];
//         if(dp[i]>maxl)maxl=dp[i];
//     }
//     cout<<maxl<<endl;
//     return 0;
// }

// #include <bits/stdc++.h>
// using namespace std;
// string s;
// //没有处理所有字符串相等的情况
// int main()
// {
//     cin>>s;
//     if(s.size()==1)
//     {
//         cout<<0<<endl;
//         return 0;
//     }
//     bool is=true;
//     for(int i=1;i<s.size();i++)
//     {
//         if(s[i]!=s[0])
//         {
//             is=false;
//             break;
//         }
//     }
//     if(is)
//     {
//         cout<<0<<endl;
//         return 0;
//     }
//     long long left=0,right=s.size()-1;
//     while(left<right)
//     {
//         if(s[left]!=s[right])break;
//         left++,right--;
//     }
//     if(left>=right)cout<<s.size()-1<<endl;
//     else cout<<s.size()<<endl;
//     return 0;
// }

//leetcode14 检测字符串的最长公共前缀
class Solution {
    public:
        string longestCommonPrefix(vector<string>& strs) {
            string s=strs[0];//拿到第一个字符串
            //遍历第一个字符串和剩下的比较
            for(int i=0;i<s.size();i++)
            {
                //遍历strs的其他字符串并做比较
                for(string& s1:strs)
                {
                    //其他字符串可能比选定的第一个字符串长，长的部分不可能作为公共前缀
                    //同时比较s的每一个字符和strs[i]的每一个字符
                    if(i==s.size()||s[i]!=s1[i])return s.substr(0,i);
                }
            }
            return s;
        }
    };
